﻿using Ewell.Interface.Common.Model.Constant;
using Ewell.Interface.Common.Model.GateWay.Dto.Oauth;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Ewell.Interface.Common.Model.GateWay.GateWayUriInfo
{
    public class HisOauthServiceV1 : GateWayUri
    {
        public override string url => "dubbo/cc.ewell.his.oauth.service.inter.dubbo.HisOauthServiceV1";
        public GateWayMethod queryPaymentFormListByExample => new QueryPaymentFormListByExample(url);
        public GateWayMethod addPaymentForm => new AddPaymentForm(url);
        public GateWayMethod commitPaymentFormSuccessInfoById => new CommitPaymentFormSuccessInfoById(url);
        public GateWayMethod updatePaymentFormFailedInfoById => new UpdatePaymentFormFailedInfoById(url);
        public GateWayMethod addRefundPaymentForm => new AddRefundPaymentForm(url);
        public GateWayMethod commitRefundPaymentFormSuccessInfoById => new CommitRefundPaymentFormSuccessInfoById(url);
        public GateWayMethod saveErrorMsg => new SaveErrorMsg(url);
        public GateWayMethod queryPaymentFormListByExampleV2 => new QueryPaymentFormListByExampleV2(url);
        public GateWayMethod checkBeforeDealException => new CheckBeforeDealException(url);        
    }

    public class QueryPaymentFormListByExample : GateWayMethod
    {
        public QueryPaymentFormListByExample(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryPaymentFormListByExample";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.QueryPaymentFormRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(QueryPaymentFormListByExampleReq);

        public override Type responseParamType => typeof(object);
    }

    public class AddPaymentForm : GateWayMethod
    {
        public AddPaymentForm(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "addPaymentForm";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.AddPaymentFormRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(AddPaymentFormReq);

        public override Type responseParamType => typeof(object);
    }

    public class CommitPaymentFormSuccessInfoById : GateWayMethod
    {
        public CommitPaymentFormSuccessInfoById(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "commitPaymentFormSuccessInfoById";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.CommitPaymentFormRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(CommitPaymentFormSuccessInfoByIdReq);

        public override Type responseParamType => typeof(object);
    }

    public class UpdatePaymentFormFailedInfoById : GateWayMethod
    {
        public UpdatePaymentFormFailedInfoById(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "updatePaymentFormFailedInfoById";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.UpdatePaymentFormRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(UpdatePaymentFormFailedInfoByIdReq);

        public override Type responseParamType => typeof(object);
    }

    public class AddRefundPaymentForm : GateWayMethod
    {
        public AddRefundPaymentForm(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "addRefundPaymentForm";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.AddRefundPaymentFormRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(AddRefundPaymentFormReq);

        public override Type responseParamType => typeof(object);
    }

    public class CommitRefundPaymentFormSuccessInfoById : GateWayMethod
    {
        public CommitRefundPaymentFormSuccessInfoById(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "commitRefundPaymentFormSuccessInfoById";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.CommitRefundPaymentFormRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(CommitRefundPaymentFormSuccessInfoByIdReq);

        public override Type responseParamType => typeof(object);
    }

    public class SaveErrorMsg : GateWayMethod
    {
        public SaveErrorMsg(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "saveErrorMsg";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.SaveErrorMsgRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(SaveErrorMsgReq);

        public override Type responseParamType => typeof(object);
    }

    public class QueryPaymentFormListByExampleV2 : GateWayMethod
    {
        public QueryPaymentFormListByExampleV2(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "queryPaymentFormListByExampleV2";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.SaveErrorMsgRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(QueryPaymentFormListByExampleV2Req);

        public override Type responseParamType => typeof(object);
    }

    public class CheckBeforeDealException : GateWayMethod
    {
        public CheckBeforeDealException(string baseUrl) : base(baseUrl)
        {
        }

        public override string methodName => "checkBeforeDealException";

        public override string paramClass => "cc.ewell.his.oauth.upon.payandrefundv1.CheckBeforeDealExceptionRequest";

        public override DubboParamType paramType => DubboParamType.defaultParam;

        public override Type requestParamType => typeof(CheckBeforeDealExceptionReq);

        public override Type responseParamType => typeof(object);
    }
}
